Como cambiar los colores de las letras y el fondo en un terminal
Para cambiar el color de las letras o del fondo tenemos que usar el siguiente codigo:
\e[0m
Este es un tipo de codigo de ANSI Escape Sequences que permiten controlar ciertas caracteristicas del terminal
Para saber todos los codigos podemos usar este script:
#!/bin/bash
#
# This file echoes a bunch of color codes to the
# terminal to demonstrate what's available. Each
# line is the color code of one forground color,
# out of 17 (default + 16 escapes), followed by a
# test use of that color on all nine background
# colors (default + 8 escapes).
#
T='gYw' # The test text
echo -e "\n 40m 41m 42m 43m\
44m 45m 46m 47m";
for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \
'1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \
' 36m' '1;36m' ' 37m' '1;37m';
do FG=${FGs// /}
echo -en " $FGs \033[$FG $T "
for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
done
echo;
done
echo
Que genera una salida como esta:
Para escribir un texto en verde usando echo podemos hacer lo siguiente:
> echo -e "\e[32m Texto en verde\e[0m"
NOTA: La opcion -e se utiliza para que se interpreten los caracteres de escape y no se impriman tal cual
Es importante incluir el \e[0m al final para devolver el color por defecto al terminal, si no se mantiene el color modificado.
Tambien podemos hacerlo desde un lenguaje de programacion como C:
#include
void main(){
printf("\e[41m Texto fondo rojo",27);
}
El siguiente codigo tambien seria equivalente:
#include
void main(){
printf("%c[41m Texto fondo rojo",27);
}
En este caso en vez de usar \e simplemente imprimimos el caracter no imprimible 27, lo que tiene exactamente el mismo efecto.
Bash | colores | ANSI Escape Sequences